#include "comm.hpp"

int main()
{
    bool r = createFifo(NAMED_PIPE);
    assert(r);//debug,release里面就没有了，ret没有被使用，报warning，我不想要warning
    (void)r;

    std::cout<<"server begin"<<std::endl;
    int rfd = open(NAMED_PIPE, O_RDONLY);
    std::cout<<"server end"<<std::endl;
    if(rfd < 0) exit(1);

    // read
    char buffer[1024]; 
    while(true)
    {
        int s = read(rfd, buffer, sizeof(buffer)-1);//系统调用read，这里读的时候我们将其作为字符串处理，预留一个\0空间
        if(s > 0)
        {
            buffer[s] = 0;
            std::cout<<"client->server: "<<buffer<<std::endl;
        }
        else if(s == 0)//如果client关闭wfd，read会读到0，并不会阻塞等待，此时我们让server进程退出即可。
        {
            std::cout<<"client quit! metoo"<<std::endl;
            break;
        }
        else//读取出错，说明管道建立有问题，直接输出错误信息即可。
        {
            std::cout<<"errno: "<<errno<<strerror(errno)<<std::endl;
            break;
        }
    }
    close(rfd);
    removefifo(NAMED_PIPE);
    return 0;
}